package agencia;


import java.util.Iterator;
import java.util.List;

public class PrecioPaquete {
	
	private double precioExcursiones;
	private double precioHoteles;
	private double precioVuelos;
	public static final double costoAdicional = 1000.00;
	
		public double getPrecioExcursiones() {
				return precioExcursiones;
			}

	public double getPrecioHoteles() {
		return precioHoteles;
	}

	public double getPrecioVuelos() {
		return precioVuelos;
	}
	

	
	public void agregarPrecioHotel(ReservaHotelPaquete reservaHotel){
		Hotel hotel = reservaHotel.getHotel();
		precioHoteles += hotel.getCategoria()*20;
		precioHoteles += ( calcularPrecioHabitaciones (hotel.getHabitaciones() )) * reservaHotel.getCantidadDeDias();
	}
	
	private double calcularPrecioHabitaciones (List<Habitacion> listaHabitaciones){
		double precioHabitaciones = 0.00;
		
		Iterator<Habitacion> it = listaHabitaciones.iterator();
		
		while(it.hasNext()){
			precioHabitaciones += calcularPrecioServicios( it.next().getServicios());
			precioHabitaciones += it.next().getPrecioHabitacion();
		}
		
		return precioHabitaciones;
	}
	
	private double calcularPrecioServicios (List<Servicio> listaServicios){
		double precioServicios=0.00;
		Iterator<Servicio> it = listaServicios.iterator();
		while (it.hasNext()){
			precioServicios += it.next().getPrecio();
		}
		return precioServicios;
		
	}
	public void agregarPrecioExcursion(ReservaExcursionHotel reservaExcursion){
		precioExcursiones += reservaExcursion.getExcursion().getPrecioBasicoExcursion() + reservaExcursion.getExcursion().getPrecioExcursion() + reservaExcursion.getExcursion().getPrecioServicios();
	}

	public void agregarPrecioVuelo(ReservaVueloPaquete reservaVuelo){
		precioVuelos += reservaVuelo.getVuelo().GetPrecio();
	}
	
	public double getPrecioPaquete(PaqueteEstandar paquete){
		double costoTemporada = 0.00;
		if ( paquete.recuperarTemporada().compareTo("Alta")==0) costoTemporada=300 ;
		if ( paquete.recuperarTemporada().compareTo("Media")==0) costoTemporada=200 ;
		if ( paquete.recuperarTemporada().compareTo("Baja")==0) costoTemporada=100 ;
		return precioExcursiones+precioHoteles+precioVuelos + costoTemporada;
	}
	public double getPrecioPaquete(PaquetePersonalizado paquete){
		double costoTemporada = 0.00;
		if ( paquete.recuperarTemporada().compareTo("Alta")==0) costoTemporada=300 ;
		if ( paquete.recuperarTemporada().compareTo("Media")==0) costoTemporada=200 ;
		if ( paquete.recuperarTemporada().compareTo("Baja")==0) costoTemporada=100 ;
		return precioExcursiones+precioHoteles+precioVuelos+ (costoAdicional/paquete.recuperarCantidadPasajeros()) + costoTemporada;
	}
	

}
